using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Box2D.XNA;
using Microsoft.Xna.Framework;

namespace Elementum
{
    public abstract class ContactDetector
    {

        public ContactDetector(Body body) {
            this._body = body;
        }

        protected Body _body;
        //public delegate void ContactEventHandler(Contact contact, Body contactBody, Vector2 normal);
        //public ContactEventHandler BeginContact;
        //public ContactEventHandler EndContact;



        //public Body GetContactedBody(Contact contact)
        //{
        //    if (contact.GetFixtureA().GetBody() == this._body)
        //    {
        //        return contact.GetFixtureB().GetBody();
        //    }
        //    else if (contact.GetFixtureB().GetBody() == this._body)
        //    {
        //        return contact.GetFixtureA().GetBody();
        //    }
        //    return null;
        //}

        //public Vector2 GetContactAngle(Contact contact)
        //{
        //    Vector2 angVector2 = new Vector2();

        //    if (contact.GetFixtureA().GetBody() == this._body)
        //    {
        //        //Gdx.app.log("this.body=", "A");
        //        WorldManifold w;
        //        contact.GetWorldManifold(out w);
        //        angVector2 = w._normal;
        //    }
        //    else
        //    {
        //        WorldManifold w;
        //        contact.GetWorldManifold(out w);
        //        angVector2 = w._normal;
        //        angVector2 *= -1;
        //        // angVector2
        //        //return contact.getFixtureA().getBody();
        //    }
        //    return angVector2;
        //}

        public abstract void BeginContact(Contact contact, Body contactBody, float normal);

        public abstract void EndContact(Contact contact, Body contactBody, float normal);
       

        //public virtual void PreSolve(Contact contact, ref Manifold oldManifold)
        //{
        //    //throw new NotImplementedException();
        //}

        //public virtual void PostSolve(Contact contact, ref ContactImpulse impulse)
        //{
        //   // throw new NotImplementedException();
        //}
    }
}
